package com.hbnu.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hbnu.system.model.dto.CheckBackDTO;
import com.hbnu.system.model.dto.SearchPageDTO;
import com.hbnu.system.model.dto.UserDTO;
import com.hbnu.system.model.entity.Fundsflow;

public interface FundsflowService extends IService<Fundsflow> {
    /**
     * 新增支出
     *
     * @param fundsflow
     * @return 是否成功
     */
    boolean addFundsout(Fundsflow fundsflow);
    /**
     * 删除支出
     *
     */
    boolean deleteFundsout(String ID);

    /**
     * 修改支出
     *
     * @param fundsflow
     * @return 是否成功
     */
    boolean updateFundsout(Fundsflow fundsflow);

    /**
     * 支出分页查询
     */
    IPage<Fundsflow> pageCondition(SearchPageDTO searchPageDTO);
    /**
     * 根据经费流动主键查询支出经费
     *
     * @param fundsflowID
     * @return Fundsflow
     */
    Fundsflow getFundsflow(String fundsflowID);
    /**
     * 支出登记
     */
    Boolean ReCommitFundsout(String id);
    /**
     * 支出校级审核通过
     */
    Boolean schoolCheckfundsoutPass(String PID);

    /**
     * 支出校级审核打回
     */
    Boolean schoolCheckfundsoutBack(CheckBackDTO checkBackDTO);
    /**
     * 普通用户分页查看与自己相关的支出经费情况
     */
    IPage<Fundsflow> userGetRelateFundsout(UserDTO userDTO);
    /**
     * 校级管理员查看需要自己审核的支出经费
     */
    IPage<Fundsflow> schoolUserGetfundsout(UserDTO userDTO);
    /**
     * 校级管理员查看自己已经审核的支出经费
     */
    IPage<Fundsflow> schoolUserGetfundsoutover(UserDTO userDTO);
    /**
     * 新增到账
     *
     * @param fundsflow
     * @return 是否成功
     */
    boolean addFundsarrival(Fundsflow fundsflow);
    /**
     * 删除到账
     *
     */
    boolean deleteFundsarrival(String ID);

    /**
     * 修改到账
     *
     * @param fundsflow
     * @return 是否成功
     */
    boolean updateFundsarrival(Fundsflow fundsflow);

    /**
     * 到账分页查询
     */
    IPage<Fundsflow> pageConditionarrival(SearchPageDTO searchPageDTO);
    /**
     * 根据经费流动主键查询到账经费
     *
     * @param fundsflowID
     * @return Fundsflow
     */
    Fundsflow getFundsarrivalflow(String fundsflowID);
    /**
     * 到账登记
     */
    Boolean ReCommitFundsarrival(String id);
    /**
     * 到账校级审核通过
     */
    Boolean schoolCheckfundsarrivalPass(String PID);

    /**
     * 到账校级审核打回
     */
    Boolean schoolCheckfundsarrivalBack(CheckBackDTO checkBackDTO);
    /**
     * 普通用户分页查看与自己相关的到账经费情况
     */
    IPage<Fundsflow> userGetRelateFundsarrival(UserDTO userDTO);
    /**
     * 校级管理员查看需要自己审核的到账经费
     */
    IPage<Fundsflow> schoolUserGetfundsarrival(UserDTO userDTO);
    /**
     * 校级管理员查看自己已经审核的到账经费
     */
    IPage<Fundsflow> schoolUserGetfundsarrivalover(UserDTO userDTO);
}
